package top.shiyiri.service.impl;

import top.shiyiri.dao.BookDao;
import top.shiyiri.dao.OrderDao;
import top.shiyiri.dao.OrderItemDao;
import top.shiyiri.dao.impl.BookDaoImpl;
import top.shiyiri.dao.impl.OrderDaoImpl;
import top.shiyiri.dao.impl.OrderItemDaoImpl;
import top.shiyiri.pojo.*;
import top.shiyiri.service.OrderService;

import java.util.Date;
import java.util.Map;

/**
 * @author Aunean
 * @date 2022/2/10 11:54
 */
public class OrderServiceImpl implements OrderService {
    private OrderDao orderDao = new OrderDaoImpl();
    private OrderItemDao orderItemDao = new OrderItemDaoImpl();
    private BookDao bookDao = new BookDaoImpl();

    @Override
    public String createOrder(Cart cart, Integer userId) {
        System.out.println("OrderServiceImpl 程序在【"+Thread.currentThread().getName()+"】中");

        //订单号 -》 唯一性
        String orderId = System.currentTimeMillis()+""+userId;
        //创建一个订单对象
        Order order = new Order(orderId, new Date(), cart.getTotalPrice(), 0, userId);
        //保存订单
        orderDao.saveOrder(order);
        int i = 12/0;
        //遍历购物车中每一个商品项转换成为订单项保存到数据库
        for (Map.Entry<Integer, CartItem> entry: cart.getItems().entrySet()) {
            //获取每一个购物车中的商品项
            CartItem cartItem = entry.getValue();
            //将商品项转换为订单项
            OrderItem orderItem = new OrderItem(null, cartItem.getName(), cartItem.getCount(), cartItem.getPrice(), cartItem.getTotalPrice(), orderId);
            //保存订单项到数据库
            orderItemDao.saveOrderItem(orderItem);

            //更新库存和销量
            System.out.println(cartItem);
            Book book = bookDao.queryBookById(cartItem.getId());
            System.out.println("book库存：" + book);
            book.setSales(book.getSales() + cartItem.getCount());
            book.setStock(book.getStock() - cartItem.getCount());
            bookDao.updateBook(book);
        }
        //清空购物车
        cart.clear();
        return orderId;
    }
}
